#!/bin/bash
#--------------------------------------------------------------------
# 版权信息：版权所有(C) 2018，海致星图# 文件名称: hive_load_zstp.sh
# 创建者  : 王波# 创建时间: 2018-10-23# 版本信息: V1.0
# 描述    : json格式文件解析到HIVE中
# 部署路径：/bigdata/etl_dap/ODM/shell
# 输入参数: 无
# 使用举例: sh hive_load_zstp.sh 
#--------------------------------------------------------------------
# 修改历史：# 版本     更改日期       更改人           更改说明#
#--------------------------------------------------------------------

DATA_DIR=/mnt/changsha/all_json_data_tmp
# /bigdata/data/INPUT/ZSTP/base_data
SQL_DIR=/data/dfs/dn/1/ware/bigdata/etl_dap/ODM/sql/arango
LOG_DIR=/data/dfs/dn/1/ware/bigdata/etl_dap/ODM/log/arango

cd ${DATA_DIR}
# 该调度需要配置依赖数据加载的过程 如果存在未解压的版本，则解压,同时有几个过程对这个文件进行操作，可错开时间
#for v in `ls ${DATA_DIR[@]} | grep .tgz`;
#do
#    echo "unfold $v"
#    tar -zxf $v
#    rm $v
#done


##遍历存在的文件夹，将JSON格式数据文件同步到HIVE中
for LOAD_TIME in `ls ${DATA_DIR[@]}| grep data_parsed| cut -d"_" -f3,4`
do   
	 LOAD_DT=${LOAD_TIME%_*}
     for file_name_tmp in `ls  ${DATA_DIR[@]}/data_parsed_${LOAD_TIME}/image| grep _txt`
     do
#从右向左截取第一个字符串之后的字符串
      file_name=${file_name_tmp%_*}
##创建HIVE中间表
      hive -e "CREATE TABLE IF NOT EXISTS ODM.TMP_PRE_ARANGO_${file_name}
         ( JSON   STRING )
		 PARTITIONED BY (LOAD_DT STRING  COMMENT 'ETL日期')
		ROW FORMAT DELIMITED";
	  
#合并小文件
      echo "合并${DATA_DIR[@]}/data_parsed_${LOAD_TIME}/image/${file_name}_txt中所有文件为all_files_txt文件." >> ${LOG_DIR}/${file_name}.log
	  find ${DATA_DIR[@]}/data_parsed_${LOAD_TIME}/image/${file_name}_txt -type f -exec cat {} \;>${DATA_DIR[@]}/data_parsed_${LOAD_TIME}/image/${file_name}_txt/all_files_txt
#加入表名文件夹循环读取步骤 add by wangbo
      
	rownum=`cat ${DATA_DIR}/data_parsed_${LOAD_TIME}/image/${file_name}_txt/all_files_txt |wc -l`
	if [ $? -eq 0 ]; then
		if [ ${rownum} = 0 ];then
			echo " ${DATA_DIR}/data_parsed_${LOAD_TIME}/image/${file_name}_txt/all_files_txt 存在文件但数据量为0，无需加载." > ${LOG_DIR}/${file_name}.log
			continue;
		else 
			echo "LOAD ${DATA_DIR}/data_parsed_${LOAD_TIME}/image/${file_name}_txt/all_files_txt TO HIVE." >> ${LOG_DIR}/${file_name}.log
			hive -e "LOAD DATA LOCAL INPATH '${DATA_DIR}/data_parsed_${LOAD_TIME}/image/${file_name}_txt/all_files_txt' OVERWRITE INTO TABLE ODM.TMP_PRE_ARANGO_${file_name} partition(LOAD_DT='${LOAD_DT}')" >> ${LOG_DIR}/${file_name}.log
		fi 
	else
		echo "all_files_txt文件不存在">> ${LOG_DIR}/${file_name}.log
		exit 1;
	fi
#同一表所有json文件处理完再进行拆分 alter by wangbo
      if [ -f ${SQL_DIR}/hive_proc_zstp_${file_name}.sql ];then
                echo "${SQL_DIR}/hive_proc_zstp_${file_name}.sql 拆分脚本存在，开始拆分过程." >> ${LOG_DIR}/${file_name}.log
                hive -hivevar LOAD_DT=${LOAD_DT} -f "${SQL_DIR}/hive_proc_zstp_${file_name}.sql">> ${LOG_DIR}/${file_name}.log
      else
                echo "${SQL_DIR}/hive_proc_zstp_${file_name}.sql 拆分脚本不存在.请关注">> ${LOG_DIR}/${file_name}.log
                continue;
      fi
	  if [ ! -d ${DATA_DIR}/data_parsed_${LOAD_TIME}/image/done ];then
        echo "${DATA_DIR}/data_parsed_${LOAD_TIME}/image/done目录不存在,创建存档目录"
        mkdir -p ${DATA_DIR}/data_parsed_${LOAD_TIME}/image/done
        else 
        echo "${DATA_DIR}/data_parsed_${LOAD_TIME}/image/done目录存在"
        
       fi 
      mvstate=`mv ${DATA_DIR}/data_parsed_${LOAD_TIME}/image/${file_name}_txt ${DATA_DIR}/data_parsed_${LOAD_TIME}/image/done`
      if [ $? -eq 0 ]; then
		echo " ${DATA_DIR}/data_parsed_${LOAD_TIME}/image/${file_name}_txt 已处理，在${DATA_DIR}/data_parsed_${LOAD_TIME}/image/done中存档." >> ${LOG_DIR}/${file_name}.log
		  else 
		echo " ${DATA_DIR}/data_parsed_${LOAD_TIME}/image/${file_name}_txt存档失败." >> ${LOG_DIR}/${file_name}.log
        
      fi
     done
done
